using System;
using NUnit.Framework;
namespace Parking
{
	[TestFixture()]
	public class TestClient
	{
		[Test()]
		public void TestInstanciation() {
			Client client = new Client("Martin", "Jacques", "12 rue de l'école des fans 31000 Toulouse", "0531010203", 123, "ABC 012 DEF");
			
			Assert.AreEqual(client.getNom(), "Martin");
			Assert.AreEqual(client.getPrenom(), "Jacques");
			Assert.AreEqual(client.getAdresse(), "12 rue de l'école des fans 31000 Toulouse");
			Assert.AreEqual(client.getTelephone(), "0531010203");
			Assert.AreEqual(client.getNumeroTicket(), 123);
			Assert.AreEqual(client.getImmatriculation(), "ABC 012 DEF");
		}
		
		[Test()]
		public void TestAmenerVehicule() {
			Client client = new Client("Martin", "Jacques", "12 rue de l'école des fans 31000 Toulouse", "0531010203", "ABC 012 DEF");
			
			// La conséquence de l'action "amener un véhicule" d'un client réside dans l'obtention
			// d'un ticket de parking. C'est donc son existence que l'on va tester.
			client.amenerVehicule();
			Assert.IsNotNull(client.getNumeroTicket());
		}
		
		[Test()]
		public void TestSAbonner() {
			Client client = new Client("Martin", "Jacques", "12 rue de l'école des fans 31000 Toulouse", "0531010203", 123, "ABC 012 DEF");
			Abonne abonne = Client.sAbonner(client);
			
			Assert.IsInstanceOfType(Abonne);
			Assert.AreEqual(abonne.getNom(), "Martin");
			Assert.AreEqual(abonne.getPrenom(), "Jacques");
			Assert.AreEqual(abonne.getAdresse(), "12 rue de l'école des fans 31000 Toulouse");
			Assert.AreEqual(abonne.getTelephone(), "0531010203");
			Assert.AreEqual(abonne.getNumeroTicket(), 123);
			Assert.AreEqual(abonne.getImmatriculation(), "ABC 012 DEF");
		}
		
		[Test()]
		public void TestDemanderPackGarantie() {
			Client client = new Client("Martin", "Jacques", "12 rue de l'école des fans 31000 Toulouse", "0531010203", 123, "ABC 012 DEF");
			AbonneGarantie abonneGarantie = Client.demanderPackGarantie(client);
			
			Assert.IsInstanceOfType(AbonneGarantie);
			Assert.AreEqual(abonneGarantie.getNom(), "Martin");
			Assert.AreEqual(abonneGarantie.getPrenom(), "Jacques");
			Assert.AreEqual(abonneGarantie.getAdresse(), "12 rue de l'école des fans 31000 Toulouse");
			Assert.AreEqual(abonneGarantie.getTelephone(), "0531010203");
			Assert.AreEqual(abonneGarantie.getNumeroTicket(), 123);
			Assert.AreEqual(abonneGarantie.getImmatriculation(), "ABC 012 DEF");
		}
	}
}

